home *** CD-ROM | disk | FTP | other *** search
- /*
- * NewLook's TEST.C
- */
-
- #include <exec/types.h>
- #include <exec/memory.h>
- #include <intuition/intuition.h>
- #include <graphics/gfx.h>
- #include <graphics/gfxbase.h>
- #include <graphics/rastport.h>
-
- #include "newlook.h"
-
- extern VOID DrawBorder( struct RastPort *, struct Border *, WORD, WORD );
-
- #ifndef AUTOSCROLL
- #define AUTOSCROLL 0x4000 /* V36+ */
- #endif
-
- /* The NewWindow Flags and IDCMPFlags */
-
- #define NW_FLAGS (WINDOWCLOSE|WINDOWDEPTH|WINDOWSIZING|WINDOWDRAG|ACTIVATE| \
- SMART_REFRESH|RMBTRAP)
-
- #define NW_IDCMP (CLOSEWINDOW|GADGETUP|VANILLAKEY)
-
- struct Window *w= (struct Window *)NULL;
- struct Gadget *b0, *b1, *b2;
-
- const ULONG MyNewLookHandle= 42L;
-
- STRPTR CycleTexts[]= { "Cycle",
- "Saikel",
- "Zeigel",
- NULL
- };
-
- STRPTR ListViewTexts[]= { "This",
- "is a selfmade",
- "ListView",
- "Gadget",
- NULL
- };
-
- char *whichwitch= "r";
- struct ScalebarInfo *si;
- long sN= 0;
-
- void closeit()
- {
- if(w)
- { CloseWindow(w);
- w= (struct Window *)NULL;
- }
- SmartFreeAll(MyNewLookHandle);
-
- /* just to be sure... */
- /*SmartFreeAll(MAGIC_HANDLE);*/
- }
-
- int openit()
- {
- struct NewWindow *nw;
- struct Gadget *glist;
-
- (void)SetNewLookHandle(MyNewLookHandle);
-
- /* create gadgets */
- { struct Gadget *g;
- if( g= CreateButton(20,20,80,15,"_Button",0x0B) )
- { glist= g;
- g->Activation |= TOGGLESELECT;
- b0= g;
- g->NextGadget= CreateButton(120,20,80,15,"nottuB",0x0D);
- if(g= g->NextGadget)
- { b1= g;
- g->Flags= GADGHBOX;
- (void)AddGText(g,NULL,"depends on Button state");
- g->NextGadget= CreateCheckbox(50,50,TRUE,0x0C);
- if(g= g->NextGadget)
- { (void)AddGText(g,NULL,"CheckBox");
- g->NextGadget= CreateStrGadget(100,80,80, 30,0x05);
- if(g= g->NextGadget)
- { (void)AddGText(b2=g,"StrGadget","w/ text on both sides");
- g->NextGadget= CreateButton(50,100,200,50,"Big Button",0xBB);
- if(g= g->NextGadget)
- { (void)AddGText(g,"Left","Right");
- g->NextGadget= CreateCycleButton(200,50,80,CycleTexts,0x00);
- if(g= g->NextGadget)
- { g->NextGadget= CreateSlider(50,160,90, whichwitch, 100);
- if(g= LastGadget(g))
- { g->NextGadget= CreateRadioButton(290,40,FALSE,42);
- if(g= g->NextGadget)
- { (void)AddGText(g,NULL,"Radi_oButt_on");
- g->NextGadget= CreateListView(330,100, 15, 7, ListViewTexts,1000);
- if(g= LastGadget(g))
- { g->NextGadget= CreatePaletteButton(450,20, 26,11, 3, 123);
- if(g= g->NextGadget)
- {
- ; /* be happy */
- }
- else return 11;
- }
- else return 10;
- }
- else return 9;
- }
- else return 8;
- }
- else return 7;
- }
- else return 6;
- }
- else return 5;
- }
- else return 4;
- }
- else return 3;
- }
- else return 2;
- }
-
- if(nw= InitNewWindow(0L,"NewLook",600,220,NW_IDCMP,NW_FLAGS,glist))
- {
- /* open our window */
- w= (struct Window *)OpenWindow(nw);
- }
-
- if(!w)
- return 1;
-
- { struct Border *b= CreateFrame(0,0,400,50,10,5);
- if(b)
- DrawBorder(w->RPort,b,10,180);
- /* else panic! */
- }
-
- SetScalebar(w, si= CreateScalebar(300,60, 200,13, -100,200), sN);
-
- RefreshWindowFrame(w);
- return 0;
- }
-
- int handleit()
- {
- int running= 1;
- struct IntuiMessage *imsg;
- ULONG class;
- USHORT code;
- struct Gadget *g;
-
- Wait(1L << w->UserPort->mp_SigBit);
-
- while(imsg=(struct IntuiMessage *)GetMsg(w->UserPort))
- { class = imsg->Class;
- code = imsg->Code;
- g = (struct Gadget *)imsg->IAddress;
- ReplyMsg(imsg);
-
- switch(class)
- {
- case CLOSEWINDOW:
- printf("CLOSEWINDOW\n");
- running= 0;
- break;
-
- case VANILLAKEY:
- switch( (UBYTE)code )
- {
- case '\33': /* ESC */
- running= 0;
- break;
- default:
- printf("VANILLAKEY: %d\n",code);
- break;
- }
- break;
-
- case GADGETUP:
- printf("GADGETUP: %d\n",g->GadgetID);
-
- switch( g->GadgetID )
- {
- case 0x0B: /* Button */
- if(g->Flags & SELECTED)
- SetGFlags(w,b1, b1->Flags | SELECTED);
- else
- SetGFlags(w,b1, b1->Flags &~ SELECTED);
- break;
- case 0x0C: /* Checkbox */
- if(g->Flags & SELECTED)
- { OnGadgetSafely(w,b0);
- OnGadgetSafely(w,b2);
- }
- else
- { OffGadgetSafely(w,b0);
- OffGadgetSafely(w,b2);
- }
- break;
- case 0x05: /* StringGadget */
- SetScalebar(w, si,sN=atol(((struct StringInfo *)(g->SpecialInfo))->Buffer));
- break;
- case 0xBB:
- { long n;
- for(n=sN; n<250; SetScalebar(w, si,n++)) WaitTOF();
- for(n=250; n>-150; SetScalebar(w, si,--n)) WaitTOF();
- for(n=-150; n<sN; SetScalebar(w, si,n++)) WaitTOF();
- }
- break;
- case 0x00:
- DoCycleButton(w,g);
- /* CycleButton's UserData is NewLook private! */
- break;
- }
- break;
- }
- }
- return running;
- }
-
- #ifdef DEBUG
- extern void DebugSmartMemList(void);
- #endif
-
- main(int ac, char **av)
- {
- if(ac>1)
- whichwitch= av[1];
-
- if( openit() == 0 )
- {
- #ifdef DEBUG
- printf("Memory allocated via SmartAllocate()\n");
- DebugSmartMemList();
- #endif
- while( handleit() );
-
- closeit();
- #ifdef DEBUG
- printf("\nSmartMem's Memory list at exit\n");
- DebugSmartMemList();
- #endif
- }
- exit(0);
- }
-